<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libCZI: libCZI::ISingleChannelScalingTileAccessor Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" async src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">libCZI
   </div>
   <div id="projectbrief">Reading CZI documents made easy</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">libCZI::ISingleChannelScalingTileAccessor Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="lib_c_z_i___compositor_8h_source.html">libCZI_Compositor.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for libCZI::ISingleChannelScalingTileAccessor:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor.png" usemap="#libCZI::ISingleChannelScalingTileAccessor_map" alt=""/>
  <map id="libCZI::ISingleChannelScalingTileAccessor_map" name="libCZI::ISingleChannelScalingTileAccessor_map">
<area href="classlib_c_z_i_1_1_i_accessor.html" title="The base interface (all accessor-interface must derive from this). " alt="libCZI::IAccessor" shape="rect" coords="0,0,253,24"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor_1_1_options.html">Options</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor_1_1_options.html" title="Options used for this accessor. ">Options</a> used for this accessor.  <a href="structlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor_1_1_options.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa7a0c9edcdd3460471edfdbe54fc2f76"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="structlib_c_z_i_1_1_int_size.html">libCZI::IntSize</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor.html#aa7a0c9edcdd3460471edfdbe54fc2f76">CalcSize</a> (const <a class="el" href="structlib_c_z_i_1_1_int_rect.html">libCZI::IntRect</a> &amp;roi, float zoom) const =0</td></tr>
<tr class="separator:aa7a0c9edcdd3460471edfdbe54fc2f76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cd342d241a2c438a0b71d1342428a58"><td class="memItemLeft" align="right" valign="top">virtual std::shared_ptr&lt; <a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor.html#a3cd342d241a2c438a0b71d1342428a58">Get</a> (const <a class="el" href="structlib_c_z_i_1_1_int_rect.html">libCZI::IntRect</a> &amp;roi, const <a class="el" href="classlib_c_z_i_1_1_i_dim_coordinate.html">libCZI::IDimCoordinate</a> *planeCoordinate, float zoom, const <a class="el" href="structlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor_1_1_options.html">libCZI::ISingleChannelScalingTileAccessor::Options</a> *pOptions)=0</td></tr>
<tr class="separator:a3cd342d241a2c438a0b71d1342428a58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1cd1fe10e445d286f4c64b75d4734caf"><td class="memItemLeft" align="right" valign="top">virtual std::shared_ptr&lt; <a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor.html#a1cd1fe10e445d286f4c64b75d4734caf">Get</a> (<a class="el" href="namespacelib_c_z_i.html#abf8ce12ab88b06c8b3b47efbb5e2e834">libCZI::PixelType</a> pixeltype, const <a class="el" href="structlib_c_z_i_1_1_int_rect.html">libCZI::IntRect</a> &amp;roi, const <a class="el" href="classlib_c_z_i_1_1_i_dim_coordinate.html">libCZI::IDimCoordinate</a> *planeCoordinate, float zoom, const <a class="el" href="structlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor_1_1_options.html">libCZI::ISingleChannelScalingTileAccessor::Options</a> *pOptions)=0</td></tr>
<tr class="separator:a1cd1fe10e445d286f4c64b75d4734caf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09a7963766e4c99721e6c3e13dca61cb"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor.html#a09a7963766e4c99721e6c3e13dca61cb">Get</a> (<a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> *pDest, const <a class="el" href="structlib_c_z_i_1_1_int_rect.html">libCZI::IntRect</a> &amp;roi, const <a class="el" href="classlib_c_z_i_1_1_i_dim_coordinate.html">libCZI::IDimCoordinate</a> *planeCoordinate, float zoom, const <a class="el" href="structlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor_1_1_options.html">libCZI::ISingleChannelScalingTileAccessor::Options</a> *pOptions)=0</td></tr>
<tr class="memdesc:a09a7963766e4c99721e6c3e13dca61cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy the composite to the specified bitmap.  <a href="#a09a7963766e4c99721e6c3e13dca61cb">More...</a><br /></td></tr>
<tr class="separator:a09a7963766e4c99721e6c3e13dca61cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Interface for single channel scaling tile accessors. This accessor creates a multi-tile composite of a single channel (and a single plane) with a given zoom-factor. It will use pyramid sub-blocks (if present) in order to create the destination bitmap. In this operation, it will use the pyramid-layer just above the specified zoom-factor and scale down to the requested size.<br />
The scaling operation employed here is a simple nearest-neighbor algorithm. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="aa7a0c9edcdd3460471edfdbe54fc2f76"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7a0c9edcdd3460471edfdbe54fc2f76">&#9670;&nbsp;</a></span>CalcSize()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="structlib_c_z_i_1_1_int_size.html">libCZI::IntSize</a> libCZI::ISingleChannelScalingTileAccessor::CalcSize </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structlib_c_z_i_1_1_int_rect.html">libCZI::IntRect</a> &amp;&#160;</td>
          <td class="paramname"><em>roi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>zoom</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Calculates the size a bitmap will have (when created by this accessor) for the specified ROI and the specified Zoom. Since the exact size if subject to rounding errors, one should always use this method if the exact size must be known beforehand. The Get-method which operates on a pre-allocated bitmap will only work if the size (of the bitmap passed in) exactly matches. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">roi</td><td>The ROI. </td></tr>
    <tr><td class="paramname">zoom</td><td>The zoom factor. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The size of the composite created by this accessor (for these parameters). </dd></dl>

</div>
</div>
<a id="a3cd342d241a2c438a0b71d1342428a58"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3cd342d241a2c438a0b71d1342428a58">&#9670;&nbsp;</a></span>Get() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::shared_ptr&lt;<a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a>&gt; libCZI::ISingleChannelScalingTileAccessor::Get </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structlib_c_z_i_1_1_int_rect.html">libCZI::IntRect</a> &amp;&#160;</td>
          <td class="paramname"><em>roi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classlib_c_z_i_1_1_i_dim_coordinate.html">libCZI::IDimCoordinate</a> *&#160;</td>
          <td class="paramname"><em>planeCoordinate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>zoom</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor_1_1_options.html">libCZI::ISingleChannelScalingTileAccessor::Options</a> *&#160;</td>
          <td class="paramname"><em>pOptions</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Gets the scaled tile composite of the specified plane and the specified ROI with the specifed zoom factor.<br />
The pixeltype is determined by examing the first subblock found in the specified plane (which is an arbitrary subblock). A newly allocated bitmap is returned. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">roi</td><td>The ROI. </td></tr>
    <tr><td class="paramname">planeCoordinate</td><td>The plane coordinate. </td></tr>
    <tr><td class="paramname">zoom</td><td>The zoom. </td></tr>
    <tr><td class="paramname">pOptions</td><td><a class="el" href="structlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor_1_1_options.html" title="Options used for this accessor. ">Options</a> for controlling the operation (may be nullptr). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A std::shared_ptr&lt;<a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a>&gt; </dd></dl>

</div>
</div>
<a id="a1cd1fe10e445d286f4c64b75d4734caf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1cd1fe10e445d286f4c64b75d4734caf">&#9670;&nbsp;</a></span>Get() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::shared_ptr&lt;<a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a>&gt; libCZI::ISingleChannelScalingTileAccessor::Get </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespacelib_c_z_i.html#abf8ce12ab88b06c8b3b47efbb5e2e834">libCZI::PixelType</a>&#160;</td>
          <td class="paramname"><em>pixeltype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structlib_c_z_i_1_1_int_rect.html">libCZI::IntRect</a> &amp;&#160;</td>
          <td class="paramname"><em>roi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classlib_c_z_i_1_1_i_dim_coordinate.html">libCZI::IDimCoordinate</a> *&#160;</td>
          <td class="paramname"><em>planeCoordinate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>zoom</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor_1_1_options.html">libCZI::ISingleChannelScalingTileAccessor::Options</a> *&#160;</td>
          <td class="paramname"><em>pOptions</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Gets the scaled tile composite of the specified plane and the specified ROI with the specifed zoom factor. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pixeltype</td><td>The pixeltype (of the destination bitmap). </td></tr>
    <tr><td class="paramname">roi</td><td>The ROI. </td></tr>
    <tr><td class="paramname">planeCoordinate</td><td>The plane coordinate. </td></tr>
    <tr><td class="paramname">zoom</td><td>The zoom factor. </td></tr>
    <tr><td class="paramname">pOptions</td><td><a class="el" href="structlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor_1_1_options.html" title="Options used for this accessor. ">Options</a> for controlling the operation (may be nullptr). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A std::shared_ptr&lt;<a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a>&gt; </dd></dl>

</div>
</div>
<a id="a09a7963766e4c99721e6c3e13dca61cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a09a7963766e4c99721e6c3e13dca61cb">&#9670;&nbsp;</a></span>Get() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void libCZI::ISingleChannelScalingTileAccessor::Get </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classlib_c_z_i_1_1_i_bitmap_data.html">libCZI::IBitmapData</a> *&#160;</td>
          <td class="paramname"><em>pDest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structlib_c_z_i_1_1_int_rect.html">libCZI::IntRect</a> &amp;&#160;</td>
          <td class="paramname"><em>roi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classlib_c_z_i_1_1_i_dim_coordinate.html">libCZI::IDimCoordinate</a> *&#160;</td>
          <td class="paramname"><em>planeCoordinate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>zoom</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor_1_1_options.html">libCZI::ISingleChannelScalingTileAccessor::Options</a> *&#160;</td>
          <td class="paramname"><em>pOptions</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Copy the composite to the specified bitmap. </p>
<p>The size of the bitmap must exactly match the size reported by the method "CalcSize" (for the same ROI and zoom), otherwise an invalid_argument-exception is thrown. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pDest</td><td>[in,out] The destination bitmap. </td></tr>
    <tr><td class="paramname">roi</td><td>The ROI. </td></tr>
    <tr><td class="paramname">planeCoordinate</td><td>The plane coordinate. </td></tr>
    <tr><td class="paramname">zoom</td><td>The zoom factor. </td></tr>
    <tr><td class="paramname">pOptions</td><td><a class="el" href="structlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor_1_1_options.html" title="Options used for this accessor. ">Options</a> controlling the operation. May be nullptr.</td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>libCZI/<a class="el" href="lib_c_z_i___compositor_8h_source.html">libCZI_Compositor.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespacelib_c_z_i.html">libCZI</a></li><li class="navelem"><a class="el" href="classlib_c_z_i_1_1_i_single_channel_scaling_tile_accessor.html">ISingleChannelScalingTileAccessor</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
  </ul>
</div>
</body>
</html>
